LASAFT-Net-v2 light

LASAFT-Net-v2 Light version for MDX Challenge

Preliminaries

!pip install git+https://github.com/ws-choi/LASAFT-Net-v2.git/ --quiet

Download a sample mixture track

Track info: Feel this breeze - (Prod. JoeSwan) - HyungWoo & Sunmin’

!wget https://github.com/ws-choi/LASAFT-Net-v2/raw/main/data/test/sample/mixture.wav
--2021-10-17 00:24:30--  https://github.com/ws-choi/LASAFT-Net-v2/raw/main/data/test/sample/mixture.wav
Resolving github.com (github.com)... 140.82.113.3
Connecting to github.com (github.com)|140.82.113.3|:443... 
connected.
HTTP request sent, awaiting response... 
302 Found
Location: https://raw.githubusercontent.com/ws-choi/LASAFT-Net-v2/main/data/test/sample/mixture.wav [following]
--2021-10-17 00:24:30--  https://raw.githubusercontent.com/ws-choi/LASAFT-Net-v2/main/data/test/sample/mixture.wav
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 
185.199.108.133, 185.199.110.133, 185.199.109.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.108.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1234844 (1.2M) [audio/wav]
Saving to: ‘mixture.wav’


mixture.wav           0%[                    ]       0  --.-KB/s               
mixture.wav         100%[===================>]   1.18M  --.-KB/s    in 0.1s    

2021-10-17 00:24:30 (8.66 MB/s) - ‘mixture.wav’ saved [1234844/1234844]

Load a Sample Mixture Track

import soundfile as sf
from IPython.display import display, Audio
import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning) 

print('Track info: Feel this breeze - (Prod. JoeSwan) - HyungWoo & Sunmin')
mixture, _ = sf.read('mixture.wav')

display(Audio(mixture.T, rate=44100))
Track info: Feel this breeze - (Prod. JoeSwan) - HyungWoo & Sunmin

Load the pretrained model

from lasaft.pretrained import get_mdx_light_v2_699
model = get_mdx_light_v2_699()
checkpoint is loaded 

Separate sources with LASAFT-Net-V2

result = model.separate_tracks(mixture, ['vocals', 'drums', 'bass', 'other'], overlap_ratio=0.5, batch_size=4)
/home/wschoi/exit/envs/tutorial-environment/lib/python3.9/site-packages/torch/functional.py:545: UserWarning: istft will require a complex-valued input tensor in a future PyTorch release. Matching the output from stft with return_complex=True.  (Triggered internally at  /pytorch/aten/src/ATen/native/SpectralOps.cpp:817.)
  return _VF.istft(input, n_fft, hop_length, win_length, window, center,  # type: ignore[attr-defined]
print('separated vocals:')
display(Audio(result['vocals'].T, rate=44100))
separated vocals:
print('separated drums:')
display(Audio(result['drums'].T, rate=44100))
separated drums:
print('separated bass:')
display(Audio(result['bass'].T, rate=44100))
separated bass:
print('separated other:')
display(Audio(result['other'].T, rate=44100))
separated other: